package com.emm.yixun.customer.service;

import java.util.HashMap;
import java.util.Map;

import javax.jws.WebService;

import com.emm.yixun.common.app.base.CommonResDTO;
import com.emm.yixun.common.model.Signed;
import com.emm.yixun.common.model.SignedInfo;
import com.emm.yixun.common.model.User;
import com.emm.yixun.common.model.dto.BusinessAbnormaDto;
import com.emm.yixun.common.model.dto.SignedDto;
import com.emm.yixun.common.page.Page;
import com.emm.yixun.common.response.Response;
import com.emm.yixun.common.response.ResponseList;

@WebService
public interface SignedServiceFacade {
	/**
	 * 新增
	 */
	Response<SignedDto> save(SignedDto dto);

	/**
	 * 修改,当selective=true时修改非空列,当selective=false修改所有列
	 */
	Response<Integer> updateByPrimaryKey(SignedDto dto, Boolean selective);

	/**
	 * 逻辑删除
	 */
	Response<Integer> deleteByPrimaryKey(Long id);

	/**
	 * 主键查询
	 */
	Response<SignedInfo> findByIdInfo(Long id);

	/**
	 * 主键查询
	 */
	Response<Signed> findById(Long id);

	/**
	 * 根据dto查询记录
	 */
	ResponseList<Signed> findByDto(SignedDto dto);

	/**
	 * 根据dto以及分页参数查询记录
	 */
	Page<Signed> findPageByDto(SignedDto dto, Integer begin, Integer row);

	Response<Page<SignedDto>> getSignedDtoList(SignedDto reqDto, Integer pageSize, Integer pageNum);

	/**
	 * 面积补差列表 功能描述: <br>
	 * 〈功能详细描述〉
	 * 
	 * @param reqDto
	 * @param pageSize
	 * @param pageNum
	 * @return
	 * @see [相关类/方法](可选)
	 * @since [产品/模块版本](可选)
	 */
	Response<Page<SignedDto>> selectSignedDtoList(SignedDto reqDto, Integer pageSize, Integer pageNum);

	/**
	 * 面积补差列表 功能描述: <br>
	 * 〈功能详细描述〉
	 * 
	 * @param reqDto
	 * @return
	 * @see [相关类/方法](可选)
	 * @since [产品/模块版本](可选)
	 */
	ResponseList<SignedDto> selectAllDto(SignedDto reqDto);

	/**
	 * 面积补差列表 功能描述: <br>
	 * 〈功能详细描述〉
	 * 
	 * @param reqDto
	 * @return
	 * @see [相关类/方法](可选)
	 * @since [产品/模块版本](可选)
	 */
	ResponseList<SignedDto> allDto(SignedDto reqDto);

	/**
	 * 签约
	 */
	Response<SignedDto> addSigned(String params, User user) throws Exception;

	/**
	 * 签约变更房源信息
	 */
	Response<SignedDto> selectChangeSignedByDto(SignedDto reqDto);

	/**
	 * 签约合同变更
	 */
	Response<SignedDto> contactChange(Signed signed, String params, User user, String paymentMethod) throws Exception;

	/**
	 * 方法描述 : 已收认筹认购金 创建者：ThinkPad 项目名称： emm-customer-api 类名：
	 * SignedServiceFacade.java 版本： v1.0 创建时间： 2016年8月1日 下午2:20:53
	 * 
	 * @param payDepositId
	 * @param subId
	 * @return Response<String>
	 */
	HashMap<String, Double> signedContractAmount(Long payDepositId, Long subId);

	/**
	 * 创建更名消息
	 * 
	 * @param payDepositDto
	 * @return
	 */
	public CommonResDTO addNotice_GM(BusinessAbnormaDto businessAbnormaDto, Map<String, Object> managerMap,
			String procInstId);

	/**
	 * 创建退房消息
	 * 
	 * @param payDepositDto
	 * @return
	 */
	public CommonResDTO addNotice_TF(BusinessAbnormaDto businessAbnormaDto, Map<String, Object> managerMap,
			String procInstId);

	/**
	 * 签约换房提交审批申请 创建并发送提醒消息 subscribeId 认购ID、procInstId 流程实例ID
	 */
	public CommonResDTO addSignedNotice(Long signedId, String procInstId);

	/**
	 * 创建签约消息
	 * 
	 * @param signedDto
	 * @return
	 */
	public CommonResDTO addNotice_QY(SignedDto signedDto, String procInstId, String flag);

	/**
	 * 客户信息 功能描述: <br>
	 * 〈功能详细描述〉
	 * 
	 * @param id
	 * @return
	 * @see [相关类/方法](可选)
	 * @since [产品/模块版本](可选)
	 */
	Response<SignedDto> selectSignedCustomer(Long id);

	/**
	 * 签约信息变更如合同金额、应收款
	 */
	Response<SignedDto> signeRepairData(Signed signed, String params, User user, String paymentMethod) throws Exception;

	/**
	 * 
	 * querySignedDtoExport:(导出签约信息接口). <br/>
	 * 
	 * @author Administrator
	 * @param signedDto
	 * @return
	 * @since JDK 1.6
	 */
	ResponseList<SignedDto> querySignedDtoExport(SignedDto signedDto);
	
	/**
	 * 客户详情页查询签约列表
	 */
	Response<Page<SignedDto>> getPageDtoByCustomerId(String customerId, Integer pageSize, Integer pageNum);

	/**
	 *根据dto以及分页参数查询记录
	 */
	Page<SignedDto> getSignedInfoPage(SignedDto dto, Integer begin, Integer row);



    /**
     *根据dto以及分页参数查询记录
     */
    ResponseList<SignedDto> getSignedInfoByDto(SignedDto dto);

}
